package com.huitu.whht.base.core.api.wr.res;

import com.huitu.api.rest.AbstractApiResource;
import com.huitu.commons.PageUtils;
import com.huitu.whht.api.core.common.response.ApiResultBuilder;
import com.huitu.whht.api.core.common.annotations.SzyCoreApiResource;
import com.huitu.whht.api.core.common.annotations.SzyCoreApiService;
import com.huitu.whht.api.core.common.response.StatusRespBuilder;

import com.huitu.whht.base.core.api.wr.res.entities.WrResB;

import com.huitu.whht.base.core.api.wr.res.entities.WrResBQo;
import com.huitu.whht.base.core.api.wr.res.service.IWrResBService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;

import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

/**
 * 说明: 水库基本信息表API,表名称: WR_RES_B <br/>
 * 日期: 2019-04-15
 * @author LiuCW
 */
@Component
@SzyCoreApiResource
@Path("wr/res/b")
public class WrResBResource extends AbstractApiResource {

    private static final Logger LOGGER = LoggerFactory.getLogger(WrResBResource.class);

    private static final String UUID = "24d0f59e-9594-434b-94f4-d03d72077c62";

    @Override
    public String getUUID() {
        return UUID;
    }

    @Autowired
    @SzyCoreApiService
    IWrResBService wrResBService;

    /**
     * @api {get} wr/res/b/{resCd:\\w{12}} [R][G]根据主键查询
     * @apiDescription [G]根据主键查询WR_RES_B(水库基本信息表)数据
     * @apiName (generate)select by primary key
     * @apiGroup WR_RES_B-水库基本信息表
     * @apiVersion 1.0.0
     * @apiSampleRequest wr/res/b/420116000072
     * @apiParam   {String}         resCd              【必须】水库代码
     * @apiSuccess {String}         resCd              水库代码
     * @apiSuccess {String}         resNm              水库名称
     * @apiSuccess {String}         loc                所在地
     * @apiSuccess {String}         compYm             建成年月
     * @apiSuccess {String}         projScal           工程规模
     * @apiSuccess {String}         datTp              基面类型
     * @apiSuccess {Double}         catA               集水面积
     * @apiSuccess {Double}         desFz              设计洪水位
     * @apiSuccess {Double}         totV               总库容
     * @apiSuccess {Double}         frscV              调洪库容
     * @apiSuccess {Double}         normWz             正常蓄水位
     * @apiSuccess {Double}         cfZ                校核洪水位
     * @apiSuccess {Double}         utilV              兴利库容
     * @apiSuccess {Double}         fsZ                防洪限制水位
     * @apiSuccess {Double}         fsZV               防洪限制水位库容
     * @apiSuccess {Double}         deadZ              死水位
     * @apiSuccess {Double}         deadV              死库容
     * @apiSuccess {String}         resRegTp           水库调节方式
     * @apiSuccess {Double}         minDisc            最小下泄流量
     * @apiSuccess {Integer}        stEndLen           发电引水口至尾水口河道长度
     * @apiSuccess {String}         rhcc               水库枢纽建筑物组成
     * @apiSuccess {String}         runCond            运行状况
     * @apiSuccess {String}         engManCd           管理单位代码
     * @apiSuccess {Date}           ts                 时间戳(时间格式 <font color='red'>yyyy-MM-dd HH:mm:ss</font>)
     * @apiSuccess {String}         nt                 备注
     * @apiSuccess {String}         wsReg              供水范围
     * @apiSuccessExample 请求成功:
     * HTTP/1.1 200 OK
     * {
     * "result": {
     * "resCd": "420116000072",
     * "resNm": "德利水库",
     * "loc": "木兰乡",
     * "compYm": "197112",
     * "projScal": "4",
     * "datTp": null,
     * "catA": null,
     * "desFz": 87.92,
     * "totV": 2.04,
     * "frscV": null,
     * "normWz": 85,
     * "cfZ": 89.09,
     * "utilV": 1.344,
     * "fsZ": null,
     * "fsZV": null,
     * "deadZ": 67.9,
     * "deadV": 0.013,
     * "resRegTp": null,
     * "minDisc": null,
     * "stEndLen": null,
     * "rhcc": null,
     * "runCond": "1",
     * "engManCd": "010898432",
     * "ts": "2014-07-26 15:47:17.0",
     * "nt": null,
     * "wsReg": null
     *  }
     * }
     * @apiUse exceptions
     */
    @GET
    @Path("{resCd:\\w{12}}")
    @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
    public Response selectByPrimaryKey(@PathParam("resCd") String resCd) {
        LOGGER.info("根据主键查询 水库基本信息表,参数 resCd:{}", resCd);
        return Response.ok(ApiResultBuilder.create(this, wrResBService.selectByPrimaryKey(resCd))).build();
    }

    /**
     * @api {post} wr/res/b/list [R][G]根据条件查询
     * @apiDescription [G]根据条件查询WR_RES_B(水库基本信息表)数据
     * @apiName (generate)select by filter
     * @apiGroup WR_RES_B-水库基本信息表
     * @apiVersion 1.0.0
     * @apiSampleRequest wr/res/b/list
     * @apiParam   {List(String)}   resCdList          (数组)水库代码
     * @apiParam   {String}         resCd              水库代码
     * @apiParam   {String}         resNm              水库名称
     * @apiParam   {String}         loc                所在地
     * @apiParam   {List(String)}   projScalList       (数组)工程规模
     * @apiParam   {List(String)}   datTpList          (数组)基面类型
     * @apiParam   {Double}         catAMin            (最小)集水面积
     * @apiParam   {Double}         catAMax            (最大)集水面积
     * @apiParam   {Double}         desFzMin           (最小)设计洪水位
     * @apiParam   {Double}         desFzMax           (最大)设计洪水位
     * @apiParam   {Double}         totVMin            (最小)总库容
     * @apiParam   {Double}         totVMax            (最大)总库容
     * @apiParam   {Double}         frscVMin           (最小)调洪库容
     * @apiParam   {Double}         frscVMax           (最大)调洪库容
     * @apiParam   {Double}         normWzMin          (最小)正常蓄水位
     * @apiParam   {Double}         normWzMax          (最大)正常蓄水位
     * @apiParam   {Double}         cfZMin             (最小)校核洪水位
     * @apiParam   {Double}         cfZMax             (最大)校核洪水位
     * @apiParam   {Double}         utilVMin           (最小)兴利库容
     * @apiParam   {Double}         utilVMax           (最大)兴利库容
     * @apiParam   {Double}         fsZMin             (最小)防洪限制水位
     * @apiParam   {Double}         fsZMax             (最大)防洪限制水位
     * @apiParam   {Double}         fsZVMin            (最小)防洪限制水位库容
     * @apiParam   {Double}         fsZVMax            (最大)防洪限制水位库容
     * @apiParam   {Double}         deadZMin           (最小)死水位
     * @apiParam   {Double}         deadZMax           (最大)死水位
     * @apiParam   {Double}         deadVMin           (最小)死库容
     * @apiParam   {Double}         deadVMax           (最大)死库容
     * @apiParam   {List(String)}   resRegTpList       (数组)水库调节方式
     * @apiParam   {Double}         minDiscMin         (最小)最小下泄流量
     * @apiParam   {Double}         minDiscMax         (最大)最小下泄流量
     * @apiParam   {Integer}        stEndLenMin        (最小)发电引水口至尾水口河道长度
     * @apiParam   {Integer}        stEndLenMax        (最大)发电引水口至尾水口河道长度
     * @apiParam   {String}         rhcc               水库枢纽建筑物组成
     * @apiParam   {List(String)}   runCondList        (数组)运行状况
     * @apiParam   {List(String)}   engManCdList       (数组)管理单位代码
     * @apiParam   {String}         engManCd           管理单位代码
     * @apiParam   {Date}           tsBgTm             (开始时间)时间戳
     * @apiParam   {Date}           tsEdTm             (结束时间)时间戳
     * @apiParam   {String}         nt                 备注
     * @apiParam   {String}         wsReg              供水范围
     * @apiSuccess {String}         resCd              水库代码
     * @apiSuccess {String}         resNm              水库名称
     * @apiSuccess {String}         loc                所在地
     * @apiSuccess {String}         compYm             建成年月
     * @apiSuccess {String}         projScal           工程规模
     * @apiSuccess {String}         datTp              基面类型
     * @apiSuccess {Double}         catA               集水面积
     * @apiSuccess {Double}         desFz              设计洪水位
     * @apiSuccess {Double}         totV               总库容
     * @apiSuccess {Double}         frscV              调洪库容
     * @apiSuccess {Double}         normWz             正常蓄水位
     * @apiSuccess {Double}         cfZ                校核洪水位
     * @apiSuccess {Double}         utilV              兴利库容
     * @apiSuccess {Double}         fsZ                防洪限制水位
     * @apiSuccess {Double}         fsZV               防洪限制水位库容
     * @apiSuccess {Double}         deadZ              死水位
     * @apiSuccess {Double}         deadV              死库容
     * @apiSuccess {String}         resRegTp           水库调节方式
     * @apiSuccess {Double}         minDisc            最小下泄流量
     * @apiSuccess {Integer}        stEndLen           发电引水口至尾水口河道长度
     * @apiSuccess {String}         rhcc               水库枢纽建筑物组成
     * @apiSuccess {String}         runCond            运行状况
     * @apiSuccess {String}         engManCd           管理单位代码
     * @apiSuccess {Date}           ts                 时间戳
     * @apiSuccess {String}         nt                 备注
     * @apiSuccess {String}         wsReg              供水范围
     * @apiSuccessExample 请求成功:
     * HTTP/1.1 200 OK
     * {
     * "result": [{
     * "resCd": "420116000072",
     * "resNm": "德利水库",
     * "loc": "木兰乡",
     * "compYm": "197112",
     * "projScal": "4",
     * "datTp": null,
     * "catA": null,
     * "desFz": 87.92,
     * "totV": 2.04,
     * "frscV": null,
     * "normWz": 85,
     * "cfZ": 89.09,
     * "utilV": 1.344,
     * "fsZ": null,
     * "fsZV": null,
     * "deadZ": 67.9,
     * "deadV": 0.013,
     * "resRegTp": null,
     * "minDisc": null,
     * "stEndLen": null,
     * "rhcc": null,
     * "runCond": "1",
     * "engManCd": "010898432",
     * "ts": "2014-07-26 15:47:17.0",
     * "nt": null,
     * "wsReg": null
     *  }]
     * }
     *
     * @apiSuccessExample 分页请求:
     * request header: Rang={max=50;size=50;field=TS DESC}
     * HTTP/1.1 200 OK
     * {
     * "result": [{
     * "resCd": "420116000072",
     * "resNm": "德利水库",
     * "loc": "木兰乡",
     * "compYm": "197112",
     * "projScal": "4",
     * "datTp": null,
     * "catA": null,
     * "desFz": 87.92,
     * "totV": 2.04,
     * "frscV": null,
     * "normWz": 85,
     * "cfZ": 89.09,
     * "utilV": 1.344,
     * "fsZ": null,
     * "fsZV": null,
     * "deadZ": 67.9,
     * "deadV": 0.013,
     * "resRegTp": null,
     * "minDisc": null,
     * "stEndLen": null,
     * "rhcc": null,
     * "runCond": "1",
     * "engManCd": "010898432",
     * "ts": "2014-07-26 15:47:17.0",
     * "nt": null,
     * "wsReg": null
     *  }],
     * "paging": {
     * "count": 3,
     * "total": 120,
     * "finale": false,
     * "index": 1
     * }
     * }
     * @apiUse header_rang
     * @apiUse exceptions
     */
    @POST
    @Path("list")
    @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
    public Response selectList(WrResBQo filter) {
        PageUtils.startPageFromRang();
        LOGGER.info("根据条件查询 水库基本信息表,参数 WrResBQo:{}", filter);
        return Response.ok(ApiResultBuilder.create(this, wrResBService.selectList(filter))).build();
    }

    /**
     * @api {put} wr/res/b [C][G]新增数据
     * @apiPrivate
     * @apiDescription [G]新增WR_RES_B(水库基本信息表)数据
     * @apiName (generate)add data
     * @apiGroup WR_RES_B-水库基本信息表
     * @apiVersion 1.0.0
     * @apiParam   {String}         resCd              【必须】水库代码
     * @apiParam   {String}         resNm              【必须】水库名称
     * @apiParam   {String}         loc                所在地
     * @apiParam   {String}         compYm             建成年月
     * @apiParam   {String}         projScal           工程规模
     * @apiParam   {String}         datTp              基面类型
     * @apiParam   {Double}         catA               集水面积
     * @apiParam   {Double}         desFz              设计洪水位
     * @apiParam   {Double}         totV               总库容
     * @apiParam   {Double}         frscV              调洪库容
     * @apiParam   {Double}         normWz             正常蓄水位
     * @apiParam   {Double}         cfZ                校核洪水位
     * @apiParam   {Double}         utilV              兴利库容
     * @apiParam   {Double}         fsZ                防洪限制水位
     * @apiParam   {Double}         fsZV               防洪限制水位库容
     * @apiParam   {Double}         deadZ              死水位
     * @apiParam   {Double}         deadV              死库容
     * @apiParam   {String}         resRegTp           水库调节方式
     * @apiParam   {Double}         minDisc            最小下泄流量
     * @apiParam   {Integer}        stEndLen           发电引水口至尾水口河道长度
     * @apiParam   {String}         rhcc               水库枢纽建筑物组成
     * @apiParam   {String}         runCond            运行状况
     * @apiParam   {String}         engManCd           【必须】管理单位代码
     * @apiParam   {Date}           ts                 时间戳(时间格式 <font color='red'>yyyy-MM-dd HH:mm:ss</font>)
     * @apiParam   {String}         nt                 备注
     * @apiParam   {String}         wsReg              供水范围
     * @apiSuccess {Integer}        status             1:新增成功;0:新增失败.
     * @apiSuccess {String}         message            成功/失败消息内容
     * @apiSuccess {Object}         data               额外返回的数据,通常包含新增数据的主键值
     * @apiSampleRequest wr/res/b
     * @apiSuccessExample 新增成功:
     * HTTP/1.1 200 OK
     * {
     * "result": {
     * "status":1,
     * "message":"成功",
     * "data":{
     *   "resCd": "420116000072"
     *      }
     *   }
     * }
     @apiSuccessExample 新增失败:
     * HTTP/1.1 200 OK
     * {
     * "result": {
     * "status":0,
     * "message":"失败",
     * "data":{
     *   "resCd": "420116000072"
     *      }
     *   }
     * }
     * @apiParamExample {json} 请求示例:
     * {
     * "resCd": "420116000072",
     * "resNm": "德利水库",
     * "loc": "木兰乡",
     * "compYm": "197112",
     * "projScal": "4",
     * "datTp": null,
     * "catA": null,
     * "desFz": 87.92,
     * "totV": 2.04,
     * "frscV": null,
     * "normWz": 85,
     * "cfZ": 89.09,
     * "utilV": 1.344,
     * "fsZ": null,
     * "fsZV": null,
     * "deadZ": 67.9,
     * "deadV": 0.013,
     * "resRegTp": null,
     * "minDisc": null,
     * "stEndLen": null,
     * "rhcc": null,
     * "runCond": "1",
     * "engManCd": "010898432",
     * "ts": "2014-07-26 15:47:17.0",
     * "nt": null,
     * "wsReg": null
     * }
     * @apiUse exceptions
     */
    @PUT
    @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
    public Response insert(WrResB record) {
        LOGGER.info("新增 水库基本信息表,参数 WrResB:{}", record);
        return Response.ok(ApiResultBuilder.create(this, StatusRespBuilder.insert(wrResBService.insertSelective(record),record))).build();
    }

    /**
     * @api {post} wr/res/b/insertBatch [C][G]批量新增数据
     * @apiPrivate
     * @apiDescription [G]批量新增WR_RES_B(水库基本信息表)数据
     * @apiName (generate)addBatch data
     * @apiGroup WR_RES_B-水库基本信息表
     * @apiVersion 1.0.0
     * @apiParam   {String}         resCd              【必须】水库代码
     * @apiParam   {String}         resNm              【必须】水库名称
     * @apiParam   {String}         loc                所在地
     * @apiParam   {String}         compYm             建成年月
     * @apiParam   {String}         projScal           工程规模
     * @apiParam   {String}         datTp              基面类型
     * @apiParam   {Double}         catA               集水面积
     * @apiParam   {Double}         desFz              设计洪水位
     * @apiParam   {Double}         totV               总库容
     * @apiParam   {Double}         frscV              调洪库容
     * @apiParam   {Double}         normWz             正常蓄水位
     * @apiParam   {Double}         cfZ                校核洪水位
     * @apiParam   {Double}         utilV              兴利库容
     * @apiParam   {Double}         fsZ                防洪限制水位
     * @apiParam   {Double}         fsZV               防洪限制水位库容
     * @apiParam   {Double}         deadZ              死水位
     * @apiParam   {Double}         deadV              死库容
     * @apiParam   {String}         resRegTp           水库调节方式
     * @apiParam   {Double}         minDisc            最小下泄流量
     * @apiParam   {Integer}        stEndLen           发电引水口至尾水口河道长度
     * @apiParam   {String}         rhcc               水库枢纽建筑物组成
     * @apiParam   {String}         runCond            运行状况
     * @apiParam   {String}         engManCd           【必须】管理单位代码
     * @apiParam   {Date}           ts                 时间戳(时间格式 <font color='red'>yyyy-MM-dd HH:mm:ss</font>)
     * @apiParam   {String}         nt                 备注
     * @apiParam   {String}         wsReg              供水范围
     * @apiSuccess {Integer}        status             1:新增成功;0:新增失败.
     * @apiSuccess {String}         message            成功/失败消息内容
     * @apiSuccess {Object}         data               额外返回的数据,通常包含新增数据的主键值
     * @apiSampleRequest wr/res/b/insertBatch
     * @apiSuccessExample 新增成功:
     * HTTP/1.1 200 OK
     * {
     * "result": {
     * "status":1,
     * "message":"成功",
     * "data":{
     *   "resCd": "420116000072"
     *      }
     *   }
     * }
     @apiSuccessExample 新增失败:
     * HTTP/1.1 200 OK
     * {
     * "result": {
     * "status":0,
     * "message":"失败",
     * "data":{
     *   "resCd": "420116000072"
     *      }
     *   }
     * }
     * @apiParamExample {json} 请求示例:
     * [{
     * "resCd": "420116000072",
     * "resNm": "德利水库",
     * "loc": "木兰乡",
     * "compYm": "197112",
     * "projScal": "4",
     * "datTp": null,
     * "catA": null,
     * "desFz": 87.92,
     * "totV": 2.04,
     * "frscV": null,
     * "normWz": 85,
     * "cfZ": 89.09,
     * "utilV": 1.344,
     * "fsZ": null,
     * "fsZV": null,
     * "deadZ": 67.9,
     * "deadV": 0.013,
     * "resRegTp": null,
     * "minDisc": null,
     * "stEndLen": null,
     * "rhcc": null,
     * "runCond": "1",
     * "engManCd": "010898432",
     * "ts": "2014-07-26 15:47:17.0",
     * "nt": null,
     * "wsReg": null
     * }]
     * @apiUse exceptions
     */
    @POST
    @Path("insertBatch")
    @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
    public Response insertBatch(List<WrResB> recordList) {
        LOGGER.info("批量新增 水库基本信息表,参数 WrResB:[]", recordList);
        return Response.ok(ApiResultBuilder.create(this, StatusRespBuilder.insert(wrResBService.insertBatch(recordList),recordList))).build();
    }

    /**
     * @api {put} wr/res/b/{resCd:\\w{12}}/update [U][G]根据主键修改
     * @apiPrivate
     * @apiDescription [G]根据主键修改WR_RES_B(水库基本信息表)数据
     * @apiName (generate)update data
     * @apiGroup WR_RES_B-水库基本信息表
     * @apiVersion 1.0.0
     * @apiParam   {String}         resCd              【必须】水库代码
     * @apiParam   {String}         resNm              【必须】水库名称
     * @apiParam   {String}         loc                所在地
     * @apiParam   {String}         compYm             建成年月
     * @apiParam   {String}         projScal           工程规模
     * @apiParam   {String}         datTp              基面类型
     * @apiParam   {Double}         catA               集水面积
     * @apiParam   {Double}         desFz              设计洪水位
     * @apiParam   {Double}         totV               总库容
     * @apiParam   {Double}         frscV              调洪库容
     * @apiParam   {Double}         normWz             正常蓄水位
     * @apiParam   {Double}         cfZ                校核洪水位
     * @apiParam   {Double}         utilV              兴利库容
     * @apiParam   {Double}         fsZ                防洪限制水位
     * @apiParam   {Double}         fsZV               防洪限制水位库容
     * @apiParam   {Double}         deadZ              死水位
     * @apiParam   {Double}         deadV              死库容
     * @apiParam   {String}         resRegTp           水库调节方式
     * @apiParam   {Double}         minDisc            最小下泄流量
     * @apiParam   {Integer}        stEndLen           发电引水口至尾水口河道长度
     * @apiParam   {String}         rhcc               水库枢纽建筑物组成
     * @apiParam   {String}         runCond            运行状况
     * @apiParam   {String}         engManCd           【必须】管理单位代码
     * @apiParam   {Date}           ts                 【必须】时间戳
     * @apiParam   {String}         nt                 备注
     * @apiParam   {String}         wsReg              供水范围
     * @apiSuccess {Integer}        status             1:修改成功;0:要修改的数据不存在(可能已被删除)
     * @apiSuccess {String}         message            成功/失败消息内容
     * @apiSuccess {Object}         data               额外返回的数据
     * @apiSampleRequest wr/res/b/420116000072/update
     * @apiSuccessExample 修改成功:
     * HTTP/1.1 200 OK
     * {
     * "result": {
     * "status":1,
     * "message":"成功",
     * "data":null
     *   }
     * }
     * @apiSuccessExample 修改失败:
     * HTTP/1.1 200 OK
     * {
     * "result": {
     * "status":0,
     * "message":"失败",
     * "data":null
     *   }
     * }
     * @apiParamExample {json} 请求示例:
     * {
     * "resCd": "420116000072",
     * "resNm": "德利水库",
     * "loc": "木兰乡",
     * "compYm": "197112",
     * "projScal": "4",
     * "datTp": null,
     * "catA": null,
     * "desFz": 87.92,
     * "totV": 2.04,
     * "frscV": null,
     * "normWz": 85,
     * "cfZ": 89.09,
     * "utilV": 1.344,
     * "fsZ": null,
     * "fsZV": null,
     * "deadZ": 67.9,
     * "deadV": 0.013,
     * "resRegTp": null,
     * "minDisc": null,
     * "stEndLen": null,
     * "rhcc": null,
     * "runCond": "1",
     * "engManCd": "010898432",
     * "ts": "2014-07-26 15:47:17.0",
     * "nt": null,
     * "wsReg": null
     * }
     * @apiUse exceptions
     */
    @PUT
    @Path("{resCd:\\w{12}}/update")
    @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
    public Response update(@PathParam("resCd") String resCd, WrResB record) {
        record.setResCd(resCd);
        LOGGER.info("根据主键修改 水库基本信息表,参数 WrResB:{}", record);
        return Response.ok(ApiResultBuilder.create(this, StatusRespBuilder.update(wrResBService.updateByPrimaryKey(record)))).build();
    }

    /**
     * @api {put} wr/res/b/{resCd:\\w{12}}/update-selective [U][G]根据主键修改(只修改非null字段)
     * @apiPrivate
     * @apiDescription [G]根据主键修改WR_RES_B(水库基本信息表)数据,只修改非null字段
     * @apiName (generate)update selected data
     * @apiGroup WR_RES_B-水库基本信息表
     * @apiVersion 1.0.0
     * @apiParam   {String}         resCd              水库代码
     * @apiParam   {String}         resNm              水库名称
     * @apiParam   {String}         loc                所在地
     * @apiParam   {String}         compYm             建成年月
     * @apiParam   {String}         projScal           工程规模
     * @apiParam   {String}         datTp              基面类型
     * @apiParam   {Double}         catA               集水面积
     * @apiParam   {Double}         desFz              设计洪水位
     * @apiParam   {Double}         totV               总库容
     * @apiParam   {Double}         frscV              调洪库容
     * @apiParam   {Double}         normWz             正常蓄水位
     * @apiParam   {Double}         cfZ                校核洪水位
     * @apiParam   {Double}         utilV              兴利库容
     * @apiParam   {Double}         fsZ                防洪限制水位
     * @apiParam   {Double}         fsZV               防洪限制水位库容
     * @apiParam   {Double}         deadZ              死水位
     * @apiParam   {Double}         deadV              死库容
     * @apiParam   {String}         resRegTp           水库调节方式
     * @apiParam   {Double}         minDisc            最小下泄流量
     * @apiParam   {Integer}        stEndLen           发电引水口至尾水口河道长度
     * @apiParam   {String}         rhcc               水库枢纽建筑物组成
     * @apiParam   {String}         runCond            运行状况
     * @apiParam   {String}         engManCd           管理单位代码
     * @apiParam   {Date}           ts                 时间戳
     * @apiParam   {String}         nt                 备注
     * @apiParam   {String}         wsReg              供水范围
     * @apiSuccess {Integer}        status             1:修改成功;0:要修改的数据不存在(可能已被删除)
     * @apiSuccess {String}         message            成功/失败消息内容
     * @apiSuccess {Object}         data               额外返回的数据
     * @apiSampleRequest wr/res/b/420116000072/update-selective
     * * @apiSuccessExample 修改成功:
     * HTTP/1.1 200 OK
     * {
     * "result": {
     * "status":1,
     * "message":"成功",
     * "data":null
     *   }
     * }
     * @apiSuccessExample 修改失败:
     * HTTP/1.1 200 OK
     * {
     * "result": {
     * "status":0,
     * "message":"失败",
     * "data":null
     *   }
     * }
     * @apiParamExample {json} 请求示例:
     * {
     * "resCd": "420116000072",
     * "resNm": "德利水库",
     * "loc": "木兰乡",
     * "compYm": "197112",
     * "projScal": "4",
     * "datTp": null,
     * "catA": null,
     * "desFz": 87.92,
     * "totV": 2.04,
     * "frscV": null,
     * "normWz": 85,
     * "cfZ": 89.09,
     * "utilV": 1.344,
     * "fsZ": null,
     * "fsZV": null,
     * "deadZ": 67.9,
     * "deadV": 0.013,
     * "resRegTp": null,
     * "minDisc": null,
     * "stEndLen": null,
     * "rhcc": null,
     * "runCond": "1",
     * "engManCd": "010898432",
     * "ts": "2014-07-26 15:47:17.0",
     * "nt": null,
     * "wsReg": null
     * }
     * @apiUse exceptions
     */
    @PUT
    @Path("{resCd:\\w{12}}/update-selective")
    @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
    public Response updateSelective(@PathParam("resCd") String resCd, WrResB record) {
        record.setResCd(resCd);
        LOGGER.info("根据主键修改(只修改非null字段) 水库基本信息表,参数 WrResB:{}", record);
        return Response.ok(ApiResultBuilder.create(this, StatusRespBuilder.update(wrResBService.updateByPrimaryKeySelective(record)))).build();
    }

    /**
     * @api {post} wr/res/b/updateBatch [U][G]根据主键批量修改(只修改非null字段)
     * @apiPrivate
     * @apiDescription [G]根据批量主键修改WR_RES_B(水库基本信息表)数据,只修改非null字段
     * @apiName (generate)updateBatch selected data
     * @apiGroup WR_RES_B-水库基本信息表
     * @apiVersion 1.0.0
     * @apiParam   {String}         resCd              水库代码
     * @apiParam   {String}         resNm              水库名称
     * @apiParam   {String}         loc                所在地
     * @apiParam   {String}         compYm             建成年月
     * @apiParam   {String}         projScal           工程规模
     * @apiParam   {String}         datTp              基面类型
     * @apiParam   {Double}         catA               集水面积
     * @apiParam   {Double}         desFz              设计洪水位
     * @apiParam   {Double}         totV               总库容
     * @apiParam   {Double}         frscV              调洪库容
     * @apiParam   {Double}         normWz             正常蓄水位
     * @apiParam   {Double}         cfZ                校核洪水位
     * @apiParam   {Double}         utilV              兴利库容
     * @apiParam   {Double}         fsZ                防洪限制水位
     * @apiParam   {Double}         fsZV               防洪限制水位库容
     * @apiParam   {Double}         deadZ              死水位
     * @apiParam   {Double}         deadV              死库容
     * @apiParam   {String}         resRegTp           水库调节方式
     * @apiParam   {Double}         minDisc            最小下泄流量
     * @apiParam   {Integer}        stEndLen           发电引水口至尾水口河道长度
     * @apiParam   {String}         rhcc               水库枢纽建筑物组成
     * @apiParam   {String}         runCond            运行状况
     * @apiParam   {String}         engManCd           管理单位代码
     * @apiParam   {Date}           ts                 时间戳
     * @apiParam   {String}         nt                 备注
     * @apiParam   {String}         wsReg              供水范围
     * @apiSuccess {Integer}        status             1:修改成功;0:要修改的数据不存在(可能已被删除)
     * @apiSuccess {String}         message            成功/失败消息内容
     * @apiSuccess {Object}         data               额外返回的数据
     * @apiSampleRequest  wr/res/b/updateBatch
     * * @apiSuccessExample 修改成功:
     * HTTP/1.1 200 OK
     * {
     * "result": {
     * "status":1,
     * "message":"成功",
     * "data":null
     *   }
     * }
     * @apiSuccessExample 修改失败:
     * HTTP/1.1 200 OK
     * {
     * "result": {
     * "status":0,
     * "message":"失败",
     * "data":null
     *   }
     * }
     * @apiParamExample {json} 请求示例:
     * [{
     * "resCd": "420116000072",
     * "resNm": "德利水库",
     * "loc": "木兰乡",
     * "compYm": "197112",
     * "projScal": "4",
     * "datTp": null,
     * "catA": null,
     * "desFz": 87.92,
     * "totV": 2.04,
     * "frscV": null,
     * "normWz": 85,
     * "cfZ": 89.09,
     * "utilV": 1.344,
     * "fsZ": null,
     * "fsZV": null,
     * "deadZ": 67.9,
     * "deadV": 0.013,
     * "resRegTp": null,
     * "minDisc": null,
     * "stEndLen": null,
     * "rhcc": null,
     * "runCond": "1",
     * "engManCd": "010898432",
     * "ts": "2014-07-26 15:47:17.0",
     * "nt": null,
     * "wsReg": null
     * }]
     * @apiUse exceptions
     */
    @POST
    @Path("updateBatch")
    @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
    public Response updateBatch(List<WrResB> record) {
        LOGGER.info("根据主键批量修改(只修改非null字段) 水库基本信息表,参数 WrResB:{}", record);
        return Response.ok(ApiResultBuilder.create(this, StatusRespBuilder.update(wrResBService.updateBatch(record)))).build();
    }

    /**
     * @api {delete} wr/res/b/{resCd:\\w{12}} [D][G]根据主键删除
     * @apiPrivate
     * @apiDescription [G]根据主键删除WR_RES_B(水库基本信息表)数据
     * @apiName (generate)delete by primary key
     * @apiGroup WR_RES_B-水库基本信息表
     * @apiVersion 1.0.0
     * @apiSampleRequest wr/res/b/420116000072
     * @apiParam   {String}         resCd              【必须】水库代码
     * @apiSuccess {Integer}        status             1:删除成功;0:要删除的数据不存在(可能已被删除).
     * @apiSuccess {String}         message            成功/失败消息内容
     * @apiSuccess {Object}         data               额外返回的数据
     * @apiSuccessExample 删除成功:
     * HTTP/1.1 200 OK
     * {
     * "result": {
     * "status":1,
     * "message":"成功",
     * "data":null
     *   }
     * }
     * @apiSuccessExample 删除失败:
     * HTTP/1.1 200 OK
     * {
     * "result": {
     * "status":0,
     * "message":"失败",
     * "data":null
     *   }
     * }
     * @apiUse exceptions
     */
    @DELETE
    @Path("{resCd:\\w{12}}")
    @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
    public Response delete(@PathParam("resCd") String resCd) {
        LOGGER.info("根据主键删除 水库基本信息表,参数 resCd:{}", resCd);
        Integer rows = wrResBService.deleteByPrimaryKey(resCd);
        return Response.ok(ApiResultBuilder.create(this, StatusRespBuilder.delete(rows))).build();
    }

    /**
     * @api {delete} wr/res/b/by-filter [D][G]根据条件删除
     * @apiPrivate
     * @apiDescription [G]根据条件删除WR_RES_B(水库基本信息表)数据
     * @apiName (generate)delete by filter
     * @apiGroup WR_RES_B-水库基本信息表
     * @apiVersion 1.0.0
     * @apiSampleRequest wr/res/b/by-filter
     * @apiParam   {List(String)}   resCdList          (数组)水库代码
     * @apiParam   {String}         resCd              水库代码
     * @apiParam   {String}         resNm              水库名称
     * @apiParam   {String}         loc                所在地
     * @apiParam   {List(String)}   projScalList       (数组)工程规模
     * @apiParam   {List(String)}   datTpList          (数组)基面类型
     * @apiParam   {Double}         catAMin            (最小)集水面积
     * @apiParam   {Double}         catAMax            (最大)集水面积
     * @apiParam   {Double}         desFzMin           (最小)设计洪水位
     * @apiParam   {Double}         desFzMax           (最大)设计洪水位
     * @apiParam   {Double}         totVMin            (最小)总库容
     * @apiParam   {Double}         totVMax            (最大)总库容
     * @apiParam   {Double}         frscVMin           (最小)调洪库容
     * @apiParam   {Double}         frscVMax           (最大)调洪库容
     * @apiParam   {Double}         normWzMin          (最小)正常蓄水位
     * @apiParam   {Double}         normWzMax          (最大)正常蓄水位
     * @apiParam   {Double}         cfZMin             (最小)校核洪水位
     * @apiParam   {Double}         cfZMax             (最大)校核洪水位
     * @apiParam   {Double}         utilVMin           (最小)兴利库容
     * @apiParam   {Double}         utilVMax           (最大)兴利库容
     * @apiParam   {Double}         fsZMin             (最小)防洪限制水位
     * @apiParam   {Double}         fsZMax             (最大)防洪限制水位
     * @apiParam   {Double}         fsZVMin            (最小)防洪限制水位库容
     * @apiParam   {Double}         fsZVMax            (最大)防洪限制水位库容
     * @apiParam   {Double}         deadZMin           (最小)死水位
     * @apiParam   {Double}         deadZMax           (最大)死水位
     * @apiParam   {Double}         deadVMin           (最小)死库容
     * @apiParam   {Double}         deadVMax           (最大)死库容
     * @apiParam   {List(String)}   resRegTpList       (数组)水库调节方式
     * @apiParam   {Double}         minDiscMin         (最小)最小下泄流量
     * @apiParam   {Double}         minDiscMax         (最大)最小下泄流量
     * @apiParam   {Integer}        stEndLenMin        (最小)发电引水口至尾水口河道长度
     * @apiParam   {Integer}        stEndLenMax        (最大)发电引水口至尾水口河道长度
     * @apiParam   {String}         rhcc               水库枢纽建筑物组成
     * @apiParam   {List(String)}   runCondList        (数组)运行状况
     * @apiParam   {List(String)}   engManCdList       (数组)管理单位代码
     * @apiParam   {String}         engManCd           管理单位代码
     * @apiParam   {Date}           tsBgTm             (开始时间)时间戳
     * @apiParam   {Date}           tsEdTm             (结束时间)时间戳
     * @apiParam   {String}         nt                 备注
     * @apiParam   {String}         wsReg              供水范围
     * @apiSuccess {Integer}        status             通常1或者>1:删除成功;0:没有符合条件的数据.
     * @apiSuccess {String}         message            成功/失败消息内容
     * @apiSuccess {Object}         data               额外返回的数据
     * @apiSuccessExample 删除成功:
     * HTTP/1.1 200 OK
     * {
     * "result": {
     * "status":1,
     * "message":"成功",
     * "data":null
     *   }
     * }
     * @apiSuccessExample 删除失败:
     * HTTP/1.1 200 OK
     * {
     * "result": {
     * "status":0,
     * "message":"失败",
     * "data":null
     *   }
     * }
     * @apiUse exceptions
     */
    @DELETE
    @Path("by-filter")
    @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
    public Response deleteByFilter(WrResBQo filter) {
        LOGGER.info("根据条件删除 水库基本信息表,参数 WrResBQo:{}", filter);
        Integer rows = wrResBService.deleteByFilter(filter);
        return Response.ok(ApiResultBuilder.create(this, StatusRespBuilder.delete(rows))).build();
    }
}
